Poniżej zobaczymy rozkład popularności stacji i stref ogólem, ale pojawia się pytanie, czy rozkład popularności jest inny dla poszczególnych podgrup zwiedzających? Czy istnieją zależności i jeżeli tak to jakie, między:
podgrupami zwiedzających i stacjami,
podgrupami zwiedzających i strefami?
load(file="tab_bin_zsuma.RData")
library(ggplot2)
g<-ggplot(tab_bin_zsuma, aes(tab_bin_zsuma$suma,fill=tab_bin_zsuma$V60)) + geom_bar()+scale_y_continuous(breaks=seq(0,20000,5000)) + xlim(0,40) + xlab("Ilość odwiedzonych stacji") +ylab("Ilość zwiedzających")+ ggtitle("Ilość odwiedzonych stacji")+ guides(fill=guide_legend(title=NULL))
g + theme(aspect.ratio = 1/2)
Grupę wszystkich zwiedzających podzieliliśmy na 4 podgrupy (kwartyle):
osoby, które odwiedziły od 1 do 2 stacji
osoby, które odwiedziły od 3 do 5 stacji
osoby, które odwiedziły od 6 do 9 stacji
osoby, które odwiedziły co najmniej 10 stacji
load(file="tabela_kwartyl.RData")
library(ggplot2)
kwartyle_tab<- (table(tabela_kwartyl$kwartyl))
kwartyle_tab<- data.frame(kwartyle_tab)
kwartyle_tab[,1]<-c("grupa 1","grupa 2","grupa 3","grupa 4")
row.names(kwartyle_tab) <-c("Od 1 do 2 stacji", "Od 3 do 5 stacji", "Od 6 do 9 stacji", "Powyzej 10 stacji")
colnames(kwartyle_tab)[2]<- "Ilosc"
colnames(kwartyle_tab)[1]<- "Grupa"
g<-ggplot(kwartyle_tab,aes(x=row.names(kwartyle_tab),y=kwartyle_tab$Ilosc,fill=kwartyle_tab$Grupa)) + geom_bar(stat="identity",colour="black")+xlab("Podgrupa") + ylab("Ilość zwiedzających") + ggtitle("Wielkości podgrup") + geom_text(aes(label=kwartyle_tab$Ilosc),vjust=1.2) + guides(fill=FALSE)
g + theme(aspect.ratio = 1/2)
Sprawdziliśmy ilość odwiedzin poszczególnych stacji (popularność stacji) w grupie wszystkich zwiedzających:
Do utworzenia powyższego histogramu potrzebujemy tabeli popularnosc_stacji_tab, kod pokazujący jak utworzyliśmy tę tabelę jest umieszczony w Dodatku.
Sprawdziliśmy ilość odwiedzin stacji z poszczególnych stref (popularność stref) w grupie wszystkich zwiedzających:
Do utworzenia powyższego histogramu potrzebujemy tabeli wektor_tab, kod pokazujący jak utworzyliśmy tę tabelę jest umieszczony w Dodatku.
Aby sprawdzić niezależność dla powyższych dwóch par zmiennych jakościowych wykorzystamy analizę korespondencji.
(Analiza korespondencji dla dwóch par zmiennych jakościowych: kwartyle i stacje oraz kwartyle i strefy. Dla stacji mamy 59 poziomów dla stref mamy 4 poziomy.)
Obserujemy dwie pary zmiennych jakościowych. Interesuje nas, czy zmienne te są od siebie niezależne, a jeżeli nie są niezależne, to które kombinacje poziomów występują ze sobą znacznie częściej.
Dane z którymi mamy do czynienia to dwie macierze o wymiarach 4x4 oraz 59x4.
## kwartyl
## strefa (0,2] (2,5] (5,9] (9,51]
## JA 26429 72434 114420 277952
## JA_MY_ONI 13419 48525 88485 256937
## JA_SWIAT 4146 14431 25443 69861
## JA_TY 11999 21724 32485 79472
## kwartyl
## stacja (0,2] (2,5] (5,9] (9,51]
## cnk02a 2622 5913 7990 15650
## cnk02b 2437 5391 7303 14252
## cnk03 390 1786 3426 10898
## cnk05 829 2878 5436 15844
## cnk06 535 2055 3559 9941
## cnk07 704 2701 5318 15716
Do pokazania powyższych macierzy potrzebujemy tabeli tabela_kwartyl_stacja_strefa, kod pokazujący jak utworzyliśmy te macierze jest umieszczony za materiałem przedstawiającym Analizę korespondencji.
Aby ocenić, które zmienne występują częściej ze sobą wykonamy analizę korespondencji. Jeżeli zmienne byłyby niezależne od siebie, to zachodziłoby równanie:
\[p_{ij}=p_{i.}p_{·j}\]
gdzie \(p_{ij}\) to prawdopodobienstwo zaobserwowania pierwszej zmiennej na poziomie \(i\) oraz jednoczesnie drugiej na poziomie \(j\), \(p_{i.}\) to prawdopodobienstwo zaobserwowania zmiennej pierwszej na poziomie \(i\), a \(p_{·j}\) to prawdopodobienstwo zaobserwowania zmiennej drugiej na poziomie \(j\).
Żeby ocenić, które zmienne występują częściej lub rzadziej niż wynikało by to z niezależności, porównamy dwie metody. Pierwsza to stworzenie macierzy residuow Pearsonowskich, druga to wykorzystanie funkcji ca().
Dla pierwszej metody wyznaczamy standaryzowane reszty Pearsonowskie, zastąpimy też prawdopodobieństwa ich czestosciowymi ocenami (czyli \(\hat{p}\) to liczba obserwowanych zdarzeń podzielona przez liczbę wszystkich obserwowanych zdarzeń)
\[\hat{e}_{ij}=\frac{\hat{p}_{ij}-\hat{p}_{i.}\hat{p}_{·j}} {\hat{p}_{i.}\hat{p}_{·j}}\]
Duze dodatnie wartosci \(\hat{e}_{ij}\) odpowiadają wysokiemu współwystepowaniu, ujemne wartosci odpowiadaja wystepowaniu rzadszemu niz losowe.
load(file="dane_stacja_strefa.RData")
# Zobaczmy które kombinacje wystepuja czesciej niz w przypadku niezaleznosci
# Policzmy residua Pearsonowskie
P = dane_strefa/sum(dane_strefa)
P_s = dane_stacja/sum(dane_stacja)
# Macierz czestosci oczekiwanych
PP = outer(rowSums(P),colSums(P))
PP_s = outer(rowSums(P_s),colSums(P_s))
# Macierz residuow Pearsonowskich
E = (P-PP)/sqrt(PP)
E_s = (P_s-PP_s)/sqrt(PP_s)
load(file="E_s.RData")
load(file="E.RData")
library(RColorBrewer)
kolory = rev(brewer.pal(11,"Spectral"))
# Macierz E przedstawmy za pomoca mapy ciepła
library(gplots)
heatmap.2(x=E_s, Colv=NA,
col = kolory,
scale="none",
margins=c(1,0),
trace='none',
cexRow=17/27,
cexCol=1,
symkey=FALSE,
symbreaks=FALSE,
dendrogram='none',
denscol="black",offsetCol=-0.5,
srtRow=0,
srtCol=0,
key.par=list(mar=c(3.5,0,3,0)),
lmat=rbind(c(5, 4, 2), c(6, 1, 3)),
lhei=c(2.5, 5),
lwid=c(1, 10, 1))
heatmap.2(x=E, Colv=NA,
col = kolory,
scale="none",
margins=c(1,1),
trace='none',
cexRow=1,
cexCol=1,
symkey=FALSE,
symbreaks=FALSE,
dendrogram='none',
denscol="black",
offsetCol=-0.5,
offsetRow=-0.5,
srtRow=0,
srtCol=0,
key.par=list(mar=c(3.5,0,3,0)),
lmat=rbind(c(5, 4, 2), c(6, 1, 3)),
lhei=c(2.5, 5),
lwid=c(1, 10, 1))
Do utworzenia powyższej mapy potrzebujemy tabeli dane_stacja_strefa, kod pokazujący jak utworzyliśmy tę tabelę jest umieszczony za materiałem przedstawiającym Analizę korespondencji.
Wyznaczyliśmy macierz reszt Pearsonowskich E (którą tez przedstawiliśmy graficznie z użyciem mapy ciepła) i z tej macierzy możemy już odczytać, w których kwartylach/podgrupach poszczególne strefy i stacje są popularniejsze. Powtórzmy: dodatnie wartości reszt odpowiadają wyższemu współwystepowaniu, ujemne wartosci odpowiadaja wystepowaniu rzadszemu, niż losowe.
Stacje: Najwieksze reszty dodatnie obserwujemy dla podgrupy (0,2] (w stacjach 25 oraz 19a), a największe ujemne wartosci obserwujemy dla podgrupy (9,51] (również w stacjach 25 oraz 19a). To oznacza, że liczba odwiedzin stacji 25 oraz 19a przez osoby z podgrupy (0,2] jest stosunkowo duża na tle pozostałych podgrup. Oraz liczba odwiedzin stacji 25 oraz 19a przez osoby z podgrupy (9,51] jest stosunkowo niska na tle pozostałych podgrup.
Strefy: Najwieksze reszty obserwujemy dla podgrupy (0,2], zarówno duze dodatnie wartosci (w strefie JA_TY) jak i duze (co do modułu) ujemne wartosci (JA_MY_ONI). To oznacza, że liczba odwiedzin strefy JA_TY przez osoby z tej podgrupy jest stosunkowa duża na tle innych podgrup, a JA_MY_ONI stosunkowo niska. Dużą resztę dodatnią mamy również dla podgrupy (9,51] (w strefie JA_MY_ONI).
load(file="dane_stacja_strefa.RData")
library(ca)
plot(ca(dane_stacja), mass=c(T,T))
Do pokazania powyższych danych potrzebujemy tabeli dane_stacja_strefa, kod pokazujący jak utworzyliśmy tę tabelę jest umieszczony za materiałem przedstawiającym Analizę korespondencji.
Stacje: Analizując ten wykres można zauważyć ciekawe zróżnicowanie stref. Na osi X największą ujemną współrzędną ma zmienna (0,2], a więc to ta zmienna odpowiada największemu zróżnicowaniu stacji. Niskie wartości na tej osi osiągają stacje, które są charakterystyczne dla osób z podgrupy (0,2]. Dodatnie wartości na tej osi osiągają stacje, które są charakterystyczne dla zwiedzających z podgrupy (9,51]. Druga oś rozróżnia strefy, charakterystyczne dla zwiedzających z podgrupy (2,5] versus (0,2].
Stacja 25 jest charakterystyczna dla zwiedzających z podgrupy (0,2]. Stacje 19b, 02a, 02b dla podgrupy (2,5], stacje 42 oraz 18 dla podgrupy (5,9]. Widzimy dużą liczbę stacji mających współrzędną x dodatnią, stąd wnioskujemy, że te stacje są odwiedzane przez podgrupę (9,51] jednak współrzędne tych wszystkich stacji są do siebie zbliżone.
load(file="dane_stacja_strefa.RData")
library(ca)
plot(ca(dane_strefa), mass=c(T,T))
Do pokazania powyższych danych potrzebujemy tabeli dane_stacja_strefa, kod pokazujący jak utworzyliśmy tę tabelę jest umieszczony za materiałem przedstawiającym Analizę korespondencji.
Strefy: Analizując ten wykres można zauważyć zróżnicowanie oraz rozmieszczenie kwartyli/podgrup analogiczne jak w przypadku stacji.
Strefa JA jest charakterystyczna dla osób z podgrupy (2,5] oraz (5,9]. Strefy JA_SWIAT oraz JA_MY_ONI dla podgrupy (9,51], a strefa JA_TY dla podgrupy (0,2].Macierz reszt Pearsonowskich: Widzimy, że największe reszty mają stacje 25 oraz 19a dla podgrupy (0,2] oraz najmniejsze reszty dla podgrupy (9,51]. Tylko te dwie stacje są wyróżnione w tej metodzie.
Pakiet ca: Dla tej metody również widzimy, że stacja 25 oraz 19a są wyróżnione. Są to stacje najbliżej położone podgrupy (0,2] oraz najdalej (9,51].
Macierz reszt Pearsonowskich: Widzimy, że największe reszty ma strefa JA_TY dla podgrupy (0,2] oraz JA_MY_ONI dla podgrupy (9,51]. Najmniejsze reszty ma strefa JA_MY_ONI dla podgrupy (0,2] oraz (2,5].
Pakiet ca: Strefa JA_TY jest najbardziej wyróżniona na wykresie (przyjmuje największe wartości co do modułu) oraz jest najbliżej podgrupy (0,2]. Strefa JA_MY_ONI przymuje największe wartości na osi X i dla niej najbliższą podgrupą jest (9,51]. Widzimy też, że patrząc względem osi X, podgrupami najdalej położonymi od strefy JA_MY_ONI są podgrupy (0,2] oraz (2,5].
Podsumowując, wyniki obu metod są podobne, w rezultacie trudno ocenić, która jest lepsza. Aby dokładniej przyjrzeć się wynikom Analizy korespondencji w Dodatku zamieściliśmy odpowiedniki histogramów “Popularność stacji” oraz “Popularność stref” w podziale na otrzymane podgrupy (dane histogramy były zamieszczone w fazie 2). Można tam zauważyć potwierdzenie naszych wyników, m. in. dla podgrupy (0,2] największe wartości przyjmują stacje 19a oraz 25. W pogrupie (9,51] stacja 25 przyjmuje niskie wartości, a stacja 19a chociaż ma wysokie wartości, to wiele stacji ma zbliżony do niej wynik. Podobne potwierdzenie znajdujemy dla stref: w porównaniu do innych podgrup, dla podgrupy (0,2] obserwujemy, że strefa JA_TY przyjmuje większe wartości, a strefa JA_MY_ONI mniejsze. Oraz dla podgrupy (9,51] widzimy, że stefa JA_MY_ONI przyjmuje zbliżony wynik do najpopularniejszej strefy JA.
#ładujemy potrzebną tabelę, która dla poszczególnego zwiedzającego mówi, czy podchodził do konkretnego eksponatu czy nie
load(file="tabela_station_strefa_sort_b.RData")
#dodajemy kolumnę pokazującą do ilu eksponatów podchodził poszczególny zwiedzający
tabela_station_strefa_sort_b$suma<-rowSums(sapply(tabela_station_strefa_sort_b[,2:58],as.numeric))
#sprawdzamy jakie są kwartyle dla danych z ostatnio dodanej kolumny
summary(tabela_station_strefa_sort_b$suma)
#dodajemy kolumnę określającą przynależność do podgrupy/kwartyla
tabela_station_strefa_sort_b$kwartyl <- cut(tabela_station_strefa_sort_b$suma, c(0,2,5,9,51))
str(tabela_station_strefa_sort_b)
#tworzymy tabelę zawierającą numer zwiedzającego i przynależność do kwartyla/podgrupy
tabela_kwartyl<-tabela_station_strefa_sort_b[,c(1,60)]
#z tabeli SmallLogs stworzyliśmy tabelę "visitor_station_strefa" mówiącą w jakich strefach i stacjach/eksponatach był dany zwiedzający
load(file="visitor_station_strefa.RData")
#do tabeli tabela_kwartyl dołączamy informacje o strefach i stacjach/eksponatach
tabela_kwartyl_stacja_strefa<-merge(x = tabela_kwartyl, y = visitor_station_strefa, by = "visitor")
(dane_strefa <- xtabs(~ strefa + kwartyl, tabela_kwartyl_stacja_strefa, drop.unused.levels = TRUE))
dane_stacja <- xtabs(~ stacja + kwartyl, tabela_kwartyl_stacja_strefa, drop.unused.levels = TRUE)
head(dane_stacja)
save(dane_stacja,dane_strefa, file="dane_stacja_strefa.RData")
library(RColorBrewer)
#tworzymy wektor kolorów
kolory = rev(brewer.pal(11,"Spectral"))
P = dane_strefa/sum(dane_strefa)
P_s = dane_stacja/sum(dane_stacja)
PP = outer(rowSums(P),colSums(P))
PP_s = outer(rowSums(P_s),colSums(P_s))
E = (P-PP)/sqrt(PP)
E_s = (P_s-PP_s)/sqrt(PP_s)
#przedstawiamy macierz E za pomocą mapy ciepła
library(gplots)
heatmap.2(x=E_s, Colv=NA,
col = kolory,
scale="none",
margins=c(1,0),
trace='none',
cexRow=17/27,
cexCol=1,
symkey=FALSE,
symbreaks=FALSE,
dendrogram='none',
denscol="black",offsetCol=-0.5,
srtRow=0,
srtCol=0,
key.par=list(mar=c(3.5,0,3,0)),
lmat=rbind(c(5, 4, 2), c(6, 1, 3)),
lhei=c(2.5, 5),
lwid=c(1, 10, 1))
heatmap.2(x=E, Colv=NA,
col = kolory,
scale="none",
margins=c(1,1),
trace='none',
cexRow=1,
cexCol=1,
symkey=FALSE,
symbreaks=FALSE,
dendrogram='none',
denscol="black",
offsetCol=-0.5,
offsetRow=-0.5,
srtRow=0,
srtCol=0,
key.par=list(mar=c(3.5,0,3,0)),
lmat=rbind(c(5, 4, 2), c(6, 1, 3)),
lhei=c(2.5, 5),
lwid=c(1, 10, 1))
#dodatkowe mapy ciepła niewykorzystane do projektu
heatmap(E,scale="row",Colv=NA, col= kolory)
heatmap(E_s,scale="row",Colv=NA, col= kolory)
heatmap(E,scale="col",Colv=NA, col= kolory)
heatmap(E_s,scale="col",Colv=NA, col= kolory)
#pakiet ca
library(ca)
plot(ca(dane_strefa), mass=c(T,T))
plot(ca(dane_stacja), mass=c(T,T))
Czy są grupy odwiedzających, preferujących pewien podzbiór eksponatów?
Czy te grupy mają cechy charakterystyczne (inne niż podzbiór preferowanych eksponatów)?
Czy preferowane eksponaty dla danej grupy mają cechy wspólne?
Będziemy pracować na tabeli danych „populacja” zawierającą informacje o 158 495 odwiedzających. Interesuje nas jedynie czy odwiedzający skorzystał ze stacji. Abstrahujemy od czasu korzystania ze stacji. W tym celu stworzyliśmy binarną tabele, w której wiersze odpowiadają id odwiedzającego, a kolumny stacją. Przypisujemy wartość populacja[i,j]=1 jeśli odwiedzający i skorzystał ze stacji j, populacja[i,j]=0 w p.p.. Tabela wygląda następująco.
Tabela 1.
Dla takich danych dokonujemy podziału populacji na 5 grup za pomocą algorytmu k-średnich.
load(file="populacja.RData")
library(cluster)
library(ggplot2)
pogrupowanie<-kmeans(populacja[,2:58],5)
populacja$grupa<-factor(pogrupowanie$cluster)
pogrupowanie$size
Otrzymane grupy mają następującą liczności:
Dla każdego takiego podziału wybieramy do dalszego opisu 10 najbardziej i najmniej popularnych stacji. Szczegółowe informacje o nich jak i o grupach zawiera poniższa tabela:
Tabela 2.
n o liczbie osób należących do grupy
10 Najczęściej Odwiedzanych Stacji zawiera listę najbardziej popularnych stacji w grupie
Ile Osób o procencie osób z grupy, którzy odwiedzili daną maszynę (szereguje stacje wg popularności)
Strefa z jakiego obszaru tematycznego pochodzi stacja
10 Najrzadziej Odwiedzanych Stacji zawiera listę najmniej popularnych stacji
Weekend o procencie osób z grupy, którzy odwiedzili CNK w weekend
\(1.\) Sylwetki grup
Do diagnostyki naszego grupowania wykorzystamy sylwetki. Każdemu obiektowi i przypisujemy wartość s(i). Im bliższa s(i) wartości 1, tym bardziej dany obiekt pasuje do swojej grupy, im bliższa wartości -1, tym bliżej temu obiektowi do grupy sąsiedniej.load(file="populacja.RData")
load(file="pogrupowanie.RData")
library(cluster)
library(factoextra)
odleglosci<-dist(populacja[0:100,2:58],"manhattan")
sylwetka <- silhouette(pogrupowanie$cluster[0:100],odleglosci )
sylwetka[1:20,]
fviz_silhouette(sylwetka)
Wykres sylwetek podważa stabilność dla grup 3, 4 i 5. Mogło by to sugerować ograniczenie liczby grup, jednak takie działanie przynosi podobny wynik.
load(file="populacja.RData")
load(file="populacja2.RData")
library(cluster)
library(factoextra)
km_diag2<-kmeans(populacja2[,2:58],2)
km_diag3<-kmeans(populacja2[,2:58],3)
odleglosci<-dist(populacja[0:100,2:58],"manhattan")
sylwetka <- silhouette(km_diag2$cluster[1:100],odleglosci )
sylwetka[1:50,]
fviz_silhouette(sylwetka)
sylwetka <- silhouette(km_diag3$cluster[1:100],odleglosci )
sylwetka[1:50,]
fviz_silhouette(sylwetka)
\(2.\) Miara Rand’a
Jest to miara podobieństwa dwóch partycji danych. Mamy zbiór n-elementowy \(S=\{e_1,…e_n\}\) oraz dwa podziały tego zbioru \(X=\{X_1,…,X_r\}\) (podział S na r podzbiorów) i \(Y=\{Y_1,..,Y_t\}\) (podział S na t podzbiorów}. Definiujemy:
a – liczba par ze zbioru S, które są w tych samych zbiorze podziału X i w tym samym zbiorze podziału Y
b – liczba parze zbioru S, które są w różnych zbiorach podziału X i różnych zbiorach podziału Y
Miara Rand’a \(r\) to \[r=\frac{a+b}{{n}\choose{2}}\]
Miara randa przyjmuje wartości z zakresu [0,1]. Wartość zero oznacza, że dwa podziały nie zgadzają się dla żadnej pary, wartość 1 oznacza podziały są dokładnie takie same. Do obliczenia miary Rand’a wykorzystamy pakiet fossil.
Dla tej samej zbiorowości wygenerowaliśmy podziały na 2, 3, 4, 6 oraz 7 grup.
load(file="populacja.RData")
load(file="populacja2.RData")
library(factoextra)
km_diag2<-kmeans(populacja2[,2:58],2)
km_diag3<-kmeans(populacja2[,2:58],3)
km_diag4<-kmeans(populacja2[,2:58],4)
km_diag6<-kmeans(populacja2[,2:58],6)
km_diag7<-kmeans(populacja2[,2:58],7)
rand.index(km_diag2$cluster[2000:4000],pogrupowanie$cluster[2000:4000])
rand.index(km_diag3$cluster[4000:6000],pogrupowanie$cluster[4000:6000])
rand.index(km_diag4$cluster[6000:8000],pogrupowanie$cluster[6000:8000])
rand.index(km_diag6$cluster[10000:12000],pogrupowanie$cluster[10000:12000])
rand.index(km_diag7$cluster[12000:14000],pogrupowanie$cluster[12000:14000])
Otrzymaliśmy następujące wartości miary Rand’a dla naszego pierwotnego podziału oraz podziału:
2-grupowego: 0.5539335
3-grupowego: 0.8915902
4-grupowego: 0.9304323
6-grupowego: 0.9331214
7-grupowego: 0.7003443
Powyższe wyniki mówią, że podziały na 3,4 i 6 grup są bardzo podobne. Dla podziału na 7 grup podobieństwo jest umiarkowane. Podział na dwie grupy nie można uznać na podobny do wyjściowego.
Można uznać podział na 5 grup na mocy powyższych danych za nieuzasadniony, jednak podział na dwie grupy byłby mało interesujący. Natomiast informacje zawarte w tabeli 2 są na tyle interesujące, że dalsze analizy oprzemy na podziale zbiorowości na 5 grup.
Celem jest przyjrzenie się najbardziej i najmniej popularnym stacją dla otrzymanych grup. Czy jest grupa odwiedzających mająca unikalny zbiór najczęściej użytkowanych stacji?
Uwagi do danych. Zauważmy, że stacja 29a występuje dla wszystkich grup w zbiorze stacji najrzadziej odwiedzanych. Jest to robot rysujący obrazy. Nie można go zatrzymać po wystartowaniu. Efektem tego jest wysoka wartość. średniego czasu użytkowania stacji, który dla całej populacji wynosi 977 sekund. Zatem rzadkie korzystanie z tej stacji może wynikać z braku technicznej możliwości, a nie dlatego, że jest nieatrakcyjna.
W celu zobrazowania danych zawartych w tabeli 2 wykorzystam diagram Venna i wykres punktowy, które przedstawiają 10 najbardziej popularnych stacji dla poszczególnych grup. Dane umieszczone w diagramie Venna mówią o liczebności podzbioru.Diagram Venna
Wykres punktowy
library(VennDiagram)
venn.plot <- venn.diagram(
x = Dane_do_Venna,
filename = NULL,
height = 10000,
width=10000,
col = "black",
fill = c("dodgerblue", "goldenrod1", "darkorange1", "seagreen3", "orchid3"),
alpha = 0.50,
cex = c(1.5, 1.5, 1.5, 1.5, 1.5, 1, 0.8, 1, 0.8, 1, 0.8, 1, 0.8,
1, 0.8, 1, 0.55, 1, 0.55, 1, 0.55, 1, 0.55, 1, 0.55, 1, 1, 1, 1, 1, 1.5),
cat.col = c("dodgerblue", "goldenrod1", "darkorange1", "seagreen3", "orchid3"),
cat.cex = 1.5,
cat.fontface = "bold",
margin = 0.05
);
jpeg("diag_venn_jpeg.jpg");
grid.draw(venn.plot);
dev.off();
Co nam mówią informację zawarte w tabeli oraz w wykresach?
Grupy 1 i 2 mają podobne zestawy stacji najbardziej i najmniej popularnych (6 wspólnych preferowanych stacji). Istotną różnicą dla nich są stacje 19a, 19b oraz 25. Stacja 25 jest najczęściej odwiedzana w grupie 1, natomiast dla grupy 25 jest drugą najrzadziej użytkowanych stacją(warto tu też nadmienić, że stacja 25 nie jest preferowana przez resztę grup. Pod tym względem grupa 1 jest unikatowa).
Grupa 3 posiada tylko 3 preferowane stacje należące grup 1 lub 2. Reszta jest unikatowa w porównaniu z tymi grupami. Natomiast lista stacji najmniej popularnych jest podobna (8 stacji należących do grup 1 lub 2).
Grupa 4 jest najbardziej unikatowa pod względem preferencji. Posiada 8 preferowanych stacji, którą nie należą do zbioru stacji preferowanych przez inne grupy. Podobnie jest ze stacjami najrzadziej odwiedzanymi (6 unikatowych stacji).
Grupa 5 ma podobny zbiór preferowanych stacji co grupa 3 (8 tych samych stacji). Wnioski. Wśród odwiedzających CNK można rozróżnić trzy zbiory eksponatów odwiedzanych przez różne grupy odwiedzających, pod względem stacji z których najczęściej korzystają.
Wnioski. Na podstawie powyższego można rozróżnić trzy zbiory eksponatów odwiedzanych przez różne grupy odwiedzających, pod względem stacji z których najczęściej korzystają.
Pierwszy zbiór eksponatów to najbardziej popularne wspólne stacje dla grup 1 i 2, czyli stacje 02a, 02b, 16, 18, 42a, 61. Wymienione eksponaty należą do różnych stref ekspozycji „Regeneracja”.
Drugi zbiór to najbardziej popularne stacje dla grupy 4. Pochodzą w zdecydowanej większości ze strefy JA MY ONI. Jest to cecha charakterystyczna tej grupy eksponatów.
Trzeci zbiór to najbardziej popularne wspólne stacje dla grup 3 i 5, czyli stacje 16,12,09,10,17,66,07,05. Są to stacje ze strefy JA (oprócz stacji 12).
Celem jest opis otrzymanych grup. Chcemy sprawdzić, które cechy są jednorodne, a co odróżnia otrzymane grupy.
Poniższy wykres prezentuje otrzymane grupy pod względem ilości odwiedzonych stacji i średniego czasu korzystania z maszynWykres wskazuje na umiarkowane rozróżnienie grup pod względem ilości odwiedzanych stacji oraz średniego czasu spędzanego przy stacji. Możemy powiedzieć, że członkowie grupy 1 korzystają z niewielu stacji (od 1 do 10, średnio z 3,5 i jest to grupa o najniższej takiej średniej). Można zaobserwować w grupie 1 podzbiór osób podchodzących do jednej stacji i spędzających w nich dużą ilość czasu (maks. 2157 sekund). Grupa 5 to osoby odwiedzające dużą ilość stacji ( od 13 do 49, średnio 24,43). Ich średni czas spędzany przy stacji nie różni się od reszty grup. Jedynie można zaobserwować, że dla osób, które odwiedziły najwięcej stacji maleje średni czas spędzany przy stacji. Widać, że czas spędzany na użytkowaniu stacji nie rozróżnia otrzymanych grup.
Powyższy wykres sugeruje, żeby bardziej szczegółowo przyjrzeć się rozkładowi liczby odwiedzanych stacji w rozróżnieniu na grupy. Rozpatrzmy zatem histogramy rozkładu ilości stacji, które użyli członkowie poszczególnych grup.
load(file="tabele_pi.RData")
library(ggplot2)
ggplot(p1,aes(p1$total_sessions))+geom_bar(aes(y = (..count..)/sum(..count..)),fill="firebrick1",colour="black")+ylab("Gęstość") +xlab("Ilość odwiedzonych stacji")+ggtitle("Grupa 1") + scale_x_continuous(breaks=seq(0,12,1)) + coord_cartesian(xlim = c(0, 12))
ggplot(p2,aes(p2$total_sessions))+geom_bar(aes(y = (..count..)/sum(..count..)),fill="firebrick1",colour="black")+ylab("Gęstość") +xlab("Ilość odwiedzonych stacji")+ggtitle("Grupa 2") + scale_x_continuous(breaks=seq(0,20,1)) + coord_cartesian(xlim = c(0, 20))
ggplot(p3,aes(p3$total_sessions))+geom_bar(aes(y = (..count..)/sum(..count..)),fill="firebrick1",colour="black")+ylab("Gęstość") +xlab("Ilość odwiedzonych stacji")+ggtitle("Grupa 3") + scale_x_continuous(breaks=seq(3,25,1)) + coord_cartesian(xlim = c(3, 25))
ggplot(p4,aes(p4$total_sessions))+geom_bar(aes(y = (..count..)/sum(..count..)),fill="firebrick1",colour="black")+ylab("Gęstość") +xlab("Ilość odwiedzonych stacji")+ggtitle("Grupa 4") + scale_x_continuous(breaks=seq(5,28,1)) + coord_cartesian(xlim = c(5, 28))
ggplot(p5,aes(p5$total_sessions))+geom_bar(aes(y = (..count..)/sum(..count..)),fill="firebrick1",colour="black")+ylab("Gęstość") +xlab("Ilość odwiedzonych stacji")+ggtitle("Grupa 4")+ scale_x_continuous(breaks=seq(14,48,1)) + coord_cartesian(xlim = c(14, 48))
Z powyższego możemy powiedzieć, że
Do grupy 1 należą osoby odwiedzający niską liczbę stacji, aż 40% tej zbiorowości odwiedza tylko jedną lub dwie stacje.
W porównaniu do grupy 1 dominanta dla grupy 2 jest już przesunięta do punktu 5 , a zakres liczby odwiedzanych stacji jest szerszy. Osoby, które podchodzą do od jednej do pięciu stacji stanowią 50% tej grupy. Zauważmy, że procent osób odwiedzających n stacji dla n=2,3,4,5,6 utrzymuje się na podobnym poziomie i wynosi około 10%.
Osoby z grup 3 i 4 podchodzą zdecydowanie częściej niż zwiedzający z poprzednich grup. W tych grupach występują zbliżone wartości średniej liczby odwiedzonych stacji (12 dla 3 i 12,8 dla 4). Histogramy dla tych grup mają podobny kształt. Najwięcej osób z grupy 3 podchodzi do 11 stacji, a z grupy 4 do 10. Można uznać, że liczba odwiedzanych stacji nie odróżnia znacznie tych dwóch klastrów.
Osoby z grupy 5 odwiedzają najwięcej stacji. Średnia wynosi 24,3 dominanta 21,a zakres od 14 do 52. Kształt histogramu jest też unikalny dla tej grupy.
Warto odnotować, że ze wzrostem liczby odwiedzanych stacji rośnie w grupie odsetek osób odwiedzających CNK w weekend
Teraz chcemy scharakteryzować najbardziej popularne stacje dla poszczególnych grup.
Rozważmy ich rozmieszczenie. Mapka poniżej prezentuje rozmieszczenie najbardziej popularnych stacji dla rozważanych grup.
Mapa CNK
Widzimy, że dla grup 3,4,5 najbardziej popularne stacje są zlokalizowane są blisko siebie. Ta bliskość potwierdza obserwacje, że najbardziej popularne stacje dla tych grup zlokalizowane są w tych samych strefach. Charakterystyczna znów jest grupa 4, dla której stacje zlokalizowane są w innej części ekspozycji niż dla grup 3 i 4( w głębi wystawy). Przypominam, że tylko osoby z grupy 4 preferowali stacje ze strefy JA MY ONI. Dla grup 1 i 2 obserwujemy rozmieszczenie najbardziej popularnych stacji po całej ekspozycji. Widzimy duże zainteresowanie eksponatami znajdującymi się przy wejściu do ekspozycji oraz niskie dla tych znajdujących się w głębi.
Nasuwają się następujące obserwacje. Występuje duże zagęszczenie najbardziej ulubionych stacji przy wejściu do „Regeneracji”, a stacje w głębi preferowane są tylko przez jedną grupę. Nie ma grup preferujący stacje ze stref JA TY oraz JA ŚWIAT.
Dwoma metodami analizy korespondencji stwierdziliśmy istnienie zależności między podgrupami zwiedzających, a stacjami i strefami. Wyniki te skonfrontowaliśmy z histogramami popularność stacji i stref dla poszczególnych podgrup zwiedzających, które potwierdziły poprawność wyników. Wyniki wszystkich metod są spójne.
Metody analizy korespondencji wskazały, że za zróżnicowanie między podgrupami zwiedzających odpowiedzialne są stacje 25 i 19a oraz strefy JA-TY i JA-MY-ONI.
Dla stref JA oraz JA-MY-ONI istnieją grupy odwiedzających preferujący tylko te konkretne strefy (grupy 3 i 5 dla strefy JA oraz grupa 4 dla strefy JA-MY-ONI). Można sdzić, że strefy te „trafiają” do konkretnych typów odwiedzających.
Mapka wskazuje, że dla grup 3 i 5 najczęściej odwiedzane stacje znajdują się przy wejściu na ekspozycje. Wysoka wartość ilości odwiedzanych stacji dla tych grup prowadzić do wniosku, że duże zagęszczenie stacji przy wejściu może prowadzić do wyczerpania przeznaczonego czasu na zwiedzanie tylko na stacje ze strefy JA i tym samym brak zainteresowania dalszymi stacjami.
Grupa 4 nie jest zainteresowana stacjami znajdującymi się przy wejściu do ekspozycji (strefa JA). Czas spędza na eksponatach ze strefy JA-MY-ONI. Może to sugerować, że są to osoby, które mają wiedze o istnieniu takiej strefy i jej eksponatów. Może są to osoby odwiedzające CNK kilka razy i powracają do niego ze względu na zainteresowanie stacjami ze strefy JA-MY-ONI.
Osoby o niskiej liczbie odwiedzonych stacji (grupa 1 i 2) odwiedzają stacje z całej ekspozycji, choć zdecydowana większość znajduję się w strefie JA.
Dla uporządkowania dokonajmy następujących oznaczeń:
1.1 - grupa osób z części pierwszej, którzy odwiedzili 1 lub 2 stacje
1.2 - grupa osób z części pierwszej, którzy odwiedzili od 3 lub 5 stacji
1.3 - grupa osób z części pierwszej, którzy odwiedzili od 6 lub 9 stacji
1.4 - grupa osób z części pierwszej, którzy odwiedzili co najmniej 10 stacji
2.1 – grupa z drugiej części, oznaczona wcześniej cyfrą 1
2.2 – grupa z drugiej części, oznaczona wcześniej cyfrą 2
2.3 – grupa z drugiej części, oznaczona wcześniej cyfrą 3
2.4 – grupa z drugiej części, oznaczona wcześniej cyfrą 4
2.5 – grupa z drugiej części, oznaczona wcześniej cyfrą 5
Osoby z grupy 1.1 w ujęciu procentowym częściej korzystają ze strefy JA-TY, niż pozostałe grupy 1.2, 1.3, 1.4. Osoby z tej grupy podchodzą do 1 lub 2 stacji. Grupę tę można utożsamić z grupą 2.1. Na mocy tego tłumaczy się dlaczego 2 stacje (25 i 18) ze strefy JA-TY należą do zbioru 10 najbardziej popularnych stacji grupy 2.2. Tylko grupa 2.2 ma aż dwie takie stacje. Tak samo ujemne skorelowanie grupy 1.1 ze strefą JA-MY-ONI tłumaczy dlaczego, aż 7 stacji z tej strefy należy do zbioru stacji najmniej popularnych dla grupy 2.1
Dla grup 1.1 oraz 1.2 występuje duża wartość reszty Pearsonowskich dla stacji 19a oraz 25. Biorąc pod uwagę liczbę odwiedzonych stacji można sądzić, że stacje 1.1, 1.2 oraz 2.1, 2.2 są ze sobą powiązane (duża liczba wspólnych odwiedzających). To tłumaczy dlaczego stacja 25 jest najbardziej popularna dla grupy 2.1, a stacja 19a najbardziej popularna dla grupy 2.2.
Zastanowić, czy duża ilość stacji przy wejściu na ekspozycje nie zaburza równowagi w interakcji z całością ekspozycji.
Rozważyć umieszczenie, przy wejściu na ekspozycje, informacji o znajdujących się w niej eksponatach wraz z opisem, tak by zwiedzający wybrał cześć najbardziej mu odpowiadającą.
Strefy JA oraz JA-MY-ONI są preferowane przez pewne podgrupy zwiedzających. Zastanowić się dlaczego nie ma takiego zbioru odwiedzających dla stref JA-TY oraz JA-ŚWIAT. Czy da się udoskonalić te strefy tak by wyodrębniły się takie grupy?
Można zauważyć, że gdy jakaś osoba odwiedziła tylko jedną stację, to jest to zazwyczaj stacja 19a lub stacja 25. Dla kolejnych grup zwiedzających 19a nadal jest jedną z najbardziej popularnych stacji, a stacja 25 w innych grupach nie jest już tak popularna. Można też zauważyć, że wraz ze wzrostem liczby odwiedzanych stacji przez jednego zwiedzającego, następuje upodabnianie się powyższych rozkładów do rozkładu jednostajnego.
Patrząc na wykresy dla tych czterech grup możemy powiedzieć, że rozkład podejść do stacji z poszczególnych stref nie różni się zbytnio dla grup o różnych liczbach stacji zwiedzonych przez jednego zwiedzającego. Jedną z różnic jest większa popularność strefy Ja-Ty w grupie “1”, niż w pozostałych grupach. Przyczyną tej różnicy jest zaobserwowana wcześniej duża popularność, znajdującej się w tej strefie stacji 25. Można też zauważyć, że popularność strefy Ja-My-Oni rośnie, biorąc pod uwagę kolejne podgrupy.
Poniższy kod tworzy histogramy “Popularność stacji”, “Popularność stref” znajdujące się na początku pierwszej części projektu oraz powyższe histogramy z Dodatku.
Wyjściowe dane do pierwszej części projektu to tabela: tabela_station_strefa_sort_b, zawiera ona informacje, czy dany zwiedzający podszedł do poszczególnych stacji.
library(dplyr)
library(ggplot2)
load(file="tabela_station_strefa_sort_b.RData")
tab_bin_zsuma<-tabela_station_strefa_sort_b
#dodanie kolumny z sumą
tab_bin_zsuma$suma<-rowSums(sapply(tabela_station_strefa_sort_b[,2:58],as.numeric))
nazwy<-c("02a","02b","03","05","06","07","09","10",
"11","13","16a","17","19a","19b","20","21","66","67",
"12","32","39","40","42a","43","44","45","49","55","56",
"57","58b","59","60","61","62","69","71","72","73","79","100","37",
"38","46a","46b","47","48a","75","18a","22",
"23","25","26","29a","78a","36","63a")
tab_bin_zsuma[,2:58] <- sapply(tab_bin_zsuma[,2:58] , as.numeric)
#popularność stacji ogółem
colSums(tab_bin_zsuma[,2:58])->
popularnosc_stacji
names(popularnosc_stacji)<-nazwy
popularnosc_stacji_tab <- data.frame(popularnosc_stacji)
popularnosc_stacji_tab[,2]<-names(popularnosc_stacji)
row.names(popularnosc_stacji_tab) <- 1:57
ggplot(popularnosc_stacji_tab,aes(y=popularnosc_stacji_tab$popularnosc_stacji,x=popularnosc_stacji_tab$V2))+geom_bar(stat="identity", fill="royalblue2") + scale_y_continuous(breaks=seq(0,50000,10000))+ xlab("Stacje") +ylab("Ilość zwiedzających")+ggtitle("Ilość zwiedzających z podziałem na stacje")+theme(axis.text.x = element_text(angle = 90, hjust = 1))
#popularność stref ogółem
pop_ja<-popularnosc_stacji[1:18]
pop_ja_my_oni<-popularnosc_stacji[19:41]
pop_ja_swiat<-popularnosc_stacji[42:48]
pop_ja_ty<-popularnosc_stacji[49:55]
wektor<-c(sum(pop_ja),sum(pop_ja_my_oni),sum(pop_ja_swiat),sum(pop_ja_ty))
nazwy_stref = c("Ja","Ja-My-Oni","Ja-Świat","Ja-Ty")
wektor_tab <- data.frame(wektor)
wektor_tab[ ,2]<- nazwy_stref
ggplot(wektor_tab,aes(x=wektor_tab$V2,y=wektor_tab$wektor))+geom_bar(stat="identity",fill="royalblue2",colour="black") +xlab("Strefy") + ylab("Ilość zwiedzających") + ggtitle("Liczba zwiedzających z podziałem na strefy ogółem")+ geom_text(aes(label=wektor_tab$wektor), vjust=1.1)
#zwiedzający, którzy podchodzą od 1 do 2 eksponatow
tab_bin_zsuma %>%
filter(suma>0, suma<3)->
tab_bin_1_do_2
colSums(tab_bin_1_do_2[,2:58])->rozklad_dla_1do2
rozklad_dla_1do2tab <- data.frame(rozklad_dla_1do2)
rozklad_dla_1do2tab[ ,2] <- names(rozklad_dla_1do2)
#oś Y została przeskalowana pierwiastkiem w ponizszym wykresie (na samym koncu linijki)
ggplot(rozklad_dla_1do2tab,aes(x=rozklad_dla_1do2tab$V2,y=rozklad_dla_1do2tab$rozklad_dla_1do2))+geom_bar(stat="identity", fill="#F8766D") + xlab("Stacje") +ylab("Ilość zwiedzających")+ggtitle("Dla odwiedzających od 1 do 2 stacji")+theme(axis.text.x = element_text(angle = 90, hjust = 1)) +scale_y_sqrt()
roz1do2_ja<-rozklad_dla_1do2[1:18]
roz1do2_ja_my_oni<-rozklad_dla_1do2[19:41]
roz1do2_ja_swiat<-rozklad_dla_1do2[42:48]
roz1do2_ja_ty<-rozklad_dla_1do2[49:55]
wektor1<-c(sum(roz1do2_ja),sum(roz1do2_ja_my_oni),sum(roz1do2_ja_swiat),sum(roz1do2_ja_ty))
nazwy_stref = c("Ja","Ja-My-Oni","Ja-Świat","Ja-Ty")
wektor1_tab <- data.frame(wektor1)
wektor1_tab[ ,2]<- nazwy_stref
ggplot(wektor1_tab,aes(x=wektor1_tab$V2,y=wektor1_tab$wektor1))+geom_bar(stat="identity",fill="#F8766D",colour="black") +xlab("Strefy") + ylab("Ilość zwiedzających") + ggtitle("Dla odwiedzających od 1 do 2 stacji")+ geom_text(aes(label=wektor1_tab$wektor), vjust=1.1)
#zwiedzający, którzy podchodzą do 3-5 eksponatów
tab_bin_zsuma %>%
filter(suma>2, suma<6)->
tab_bin_od3do5
colSums(tab_bin_od3do5[,2:58])->rozklad_dla_od3do5
rozklad_dla_3do5tab <- data.frame(rozklad_dla_od3do5)
rozklad_dla_3do5tab[ ,2] <- names(rozklad_dla_od3do5)
row.names(rozklad_dla_3do5tab) <- 1:57
ggplot(rozklad_dla_3do5tab,aes(x=rozklad_dla_3do5tab$V2,y=rozklad_dla_3do5tab$rozklad_dla_od3do5))+geom_bar(stat="identity", fill="#7CAE00") + xlab("Stacje") +ylab("Ilość zwiedzających")+ggtitle("Dla odwiedzających od 3 do 5 stacji")+theme(axis.text.x = element_text(angle = 90, hjust = 1)) +scale_y_sqrt()
roz35_ja<-rozklad_dla_od3do5[1:18]
roz35_ja_my_oni<-rozklad_dla_od3do5[19:41]
roz35_ja_swiat<-rozklad_dla_od3do5[42:48]
roz35_ja_ty<-rozklad_dla_od3do5[49:55]
wektor2<-c(sum(roz35_ja),sum(roz35_ja_my_oni),sum(roz35_ja_swiat),sum(roz35_ja_ty))
wektor2_tab <- data.frame(wektor2)
wektor2_tab[ ,2]<- nazwy_stref
ggplot(wektor2_tab,aes(x=wektor2_tab$V2,y=wektor2_tab$wektor2))+geom_bar(stat="identity",fill="#7CAE00",colour="black") +xlab("Strefy") + ylab("Ilość zwiedzających") + ggtitle("Dla odwiedzających od 3 do 5 stacji")+ geom_text(aes(label=wektor2_tab$wektor), vjust=1.1)
#zwiedzający, którzy podchodzą do 6-9eksponatów q
tab_bin_zsuma %>%
filter(suma>5, suma<10)->
tab_bin_od6do9
colSums(tab_bin_od6do9[,2:58])->rozklad_dla_od6do9
rozklad_dla_6do9tab <- data.frame(rozklad_dla_od6do9)
rozklad_dla_6do9tab[ ,2] <- names(rozklad_dla_od6do9)
ggplot(rozklad_dla_6do9tab,aes(x=rozklad_dla_6do9tab$V2,y=rozklad_dla_6do9tab$rozklad_dla_od6do9))+geom_bar(stat="identity", fill="#00BFC4") + xlab("Stacje") +ylab("Ilość zwiedzających")+ggtitle("Dla odwiedzających od 6 do 9 stacji")+theme(axis.text.x = element_text(angle = 90, hjust = 1)) +scale_y_sqrt()
roz69_ja<-rozklad_dla_od6do9[1:18]
roz69_ja_my_oni<-rozklad_dla_od6do9[19:41]
roz69_ja_swiat<-rozklad_dla_od6do9[42:48]
roz69_ja_ty<-rozklad_dla_od6do9[49:55]
wektor3<-c(sum(roz69_ja),sum(roz69_ja_my_oni),sum(roz69_ja_swiat),sum(roz69_ja_ty))
wektor3_tab <- data.frame(wektor3)
wektor3_tab[ ,2]<- nazwy_stref
ggplot(wektor3_tab,aes(x=wektor3_tab$V2,y=wektor3_tab$wektor3))+geom_bar(stat="identity",fill="#00BFC4",colour="black") +xlab("Strefy") + ylab("Ilość zwiedzających") + ggtitle("Dla odwiedzających od 6 do 9 stacji")+ geom_text(aes(label=wektor3_tab$wektor), vjust=1.1)
#zwiedzający, którzy podchodzą do conajmniej 10 eksponatów q
tab_bin_zsuma %>%
filter(suma>9)->
tab_bin_od10
colSums(tab_bin_od10[,2:58])->rozklad_dla_od10
rozklad_dla_od10tab <- data.frame(rozklad_dla_od10)
rozklad_dla_od10tab[ ,2] <- names(rozklad_dla_od10)
ggplot(rozklad_dla_od10tab,aes(x=rozklad_dla_od10tab$V2,y=rozklad_dla_od10tab$rozklad_dla_od10))+geom_bar(stat="identity", fill="#C77CFF") + xlab("Stacje") +ylab("Ilość zwiedzających")+ggtitle("Dla odwiedzających od co najmniej 10 stacji")+theme(axis.text.x = element_text(angle = 90, hjust = 1)) +scale_y_sqrt()
library(ggplot2)
roz10_ja<-rozklad_dla_od10[1:18]
roz10_ja_my_oni<-rozklad_dla_od10[19:41]
roz10_ja_swiat<-rozklad_dla_od10[42:48]
roz10_ja_ty<-rozklad_dla_od10[49:55]
wektor4<-c(sum(roz10_ja),sum(roz10_ja_my_oni),sum(roz10_ja_swiat),sum(roz10_ja_ty))
nazwy_stref = c("Ja","Ja-My-Oni","Ja-Świat","Ja-Ty")
wektor4_tab <- data.frame(wektor4)
wektor4_tab[ ,2]<- nazwy_stref
ggplot(wektor4_tab,aes(x=wektor4_tab$V2,y=wektor4_tab$wektor4))+geom_bar(stat="identity",fill="#C77CFF",colour="black") +xlab("Strefy") + ylab("Ilość zwiedzających") + ggtitle("Dla odwiedzających od co najmniej 10 stacji")+ geom_text(aes(label=wektor4_tab$wektor), vjust=1.1)
#kolory:
#"#F8766D" "#7CAE00" "#00BFC4" "#C77CFF"
Dominik Ambroziak: wymyślił i opracował pierwszą część projektu.
Mateusz Jastrząb: wykonał wszystkie histogramy ggplot w pierwszej części i Dodatku oraz jeden “Rozkład liczby odwiedzonych stacji w zależności od grupy” w drugiej części.
Patrycja Matys: opracowanie pierwszej części projektu, zarządzanie i umieszczenie wszystkich wyników w knitr.
Kamil Wirtek: wymyślił i samodzielnie opracował drugą część projektu.